package io.vincentwinner.systeminfoapi.dao;

import oshi.software.os.OSProcess;
import oshi.software.os.OSService;

import java.util.List;

/**
 * 操作系统信息
 */
public interface IOperatingSystemDao {

    /**
     * @return 系统名称
     */
    String getOSName();

    /**
     * @return 系统架构
     */
    String getArch();

    /**
     * @return 系统版本
     */
    String getOSVersion();

    /**
     * @return 当前系统用户
     */
    String getOSUserName();

    /**
     * @return 当前系统用户家目录
     */
    String getUserHome();

    /**
     * @return 当前系统行分隔符
     */
    String getLineSeparator();

    /**
     * @return 当前系统路径分隔符（环境变量路径）
     */
    String getPathSeparator();

    /**
     * @return 当前系统文件路径分隔符
     */
    String getFileSeparator();

    /**
     * @return 当前系统位数
     */
    int getBit();

    /**
     * @return 系统自启动至现在的时间（秒）
     */
    long sinceBootTime();

    /**
     * 获取所有进程信息
     * @return 当前系统所有进程信息
     */
    List<OSProcess> getProcesses();

    /**
     * 获取进程数量
     * @return 当前系统全部进程数量
     */
    int getProcessesCount();

    /**
     * 获取线程数量
     * @return 当前系统线程数量
     */
    int getThreadCount();

    /**
     * 获取当前系统所有服务
     * @return 当前系统所有服务信息
     */
    List<OSService> getServices();

}
